const socket = require("socket.io");
const http = require("http");

const server = http.createServer()

const io = socket(server, {
    cors: {
        origin: '*' // 配置跨域
    }
})

io.on('connection', sock => {
    console.log("连接成功......");
    // 给客户端发送一个连接成功的事件，客户端可以在 onMounted 中监听这个事件
    sock.emit('connectionSuccess');
    // 监听客户端发送的 joinRoom 事件，加入房间的事件
    sock.on('joinRoom', roomId => {
        console.log("加入房间成功，房间id为：" + roomId);
        // 把房间号加入服务端，这样用户A和用户B可以在房间里面通信了
        sock.join(roomId)
    })

    // 信令服务器，监听到有人在向这个房间发起通信请求
    sock.on('callRemote', roomId => {
        // 也要向这个房间里面的其他人广播这个事件
        io.to(roomId).emit('callRemote', roomId);

    })

    // 接收方同意接收音视频后，发送过来的时间，同时我们将这个事件广播给房间里面的人(广播给房间里面的其他用户)
    sock.on('acceptCall', roomId => {
        io.to(roomId).emit('acceptCall', roomId);
    })

    // 接收offer
    sock.on('sendOffer', ({ offer, roomId }) => {
        // 把offer广播给房间里面的其他用户
        io.to(roomId).emit('sendOffer', offer);
    })

    // 接收answer
    sock.on('sendAnswer', ({ answer, roomId }) => {
        // 把answer广播给房间里面的其他用户
        io.to(roomId).emit('sendAnswer', answer);
    })

    // 收到candidate信息
    sock.on('sendCandidate', ({ candidate, roomId }) => {
        // 把candidate广播给房间里面的其他用户
        io.to(roomId).emit('sendCandidate', candidate);
    })
})

server.listen(9999, () => {
    console.log("服务器启动成功，端口为9999");
})
